import { PageParam } from '@/services/common'
import { covertTableData } from '@/utils/tableUtil'
import { request } from '@umijs/max'

export interface CollectionRecordVO {
  /**
   * 奖品id
   * 奖品id
   */
  activityAwardId: string
  /**
   * 奖品名称
   * 奖品名称
   */
  activityAwardName: string
  /**
   * 活动id
   * 活动id
   */
  activityId: string
  /**
   * 活动名称
   * 活动名称
   */
  activityName: string
  /**
   * 创建时间
   * 创建时间
   */
  createTime: string
  current: string
  endTime: string
  /**
   * 领取记录id
   * 领取记录id
   */
  id: string
  /**
   * 小程序appId
   * 小程序appId
   */
  maAppId: string
  /**
   * 小程序openId
   * 小程序openId
   */
  maOpenId: string
  /**
   * 小程序用户id
   * 小程序用户id
   */
  maUserId: string
  /**
   * 公众号appId
   * 公众号appId
   */
  mpAppId: string
  /**
   * 公众号openId
   * 公众号openId
   */
  mpOpenId: string
  /**
   * 公众号用户id
   * 公众号用户id
   */
  mpUserId: string
  pageSize: string
  startTime: string
  /**
   * unionId
   * unionId
   */
  unionId: string
}

export interface CollectionRecordQueryDTO extends PageParam {
  /**
   * 领取记录id
   */
  id: string
}

export interface CollectionRecordUpdateDTO {
  /**
   * 奖品id
   * 奖品id
   */
  activityAwardId?: string
  /**
   * 奖品名称
   * 奖品名称
   */
  activityAwardName?: string
  /**
   * 活动id
   * 活动id
   */
  activityId?: string
  /**
   * 活动名称
   * 活动名称
   */
  activityName?: string
  /**
   * 创建时间
   * 创建时间
   */
  createTime?: string
  current?: string
  endTime?: string
  /**
   * 领取记录id
   * 领取记录id
   */
  id?: string
  /**
   * 小程序appId
   * 小程序appId
   */
  maAppId?: string
  /**
   * 小程序openId
   * 小程序openId
   */
  maOpenId?: string
  /**
   * 小程序用户id
   * 小程序用户id
   */
  maUserId?: string
  /**
   * 公众号appId
   * 公众号appId
   */
  mpAppId?: string
  /**
   * 公众号openId
   * 公众号openId
   */
  mpOpenId?: string
  /**
   * 公众号用户id
   * 公众号用户id
   */
  mpUserId?: string
  pageSize?: string
  startTime?: string
  /**
   * unionId
   * unionId
   */
  unionId?: string
}

export const getCollectionRecordById = async (id: string) => {
  return request<CollectionRecordVO>(`/api/awardReceiveLog?id=${id}`, { methods: 'GET' })
}

export const getCollectionRecordList = async (params: CollectionRecordQueryDTO) => {
  return request<Array<CollectionRecordVO>>(`/api/awardReceiveLog/awardReceiveLogList`, { method: 'GET', params })
}

export const getCollectionRecordPage = async (params: CollectionRecordQueryDTO) => {
  let response = await request<Array<CollectionRecordVO>>(`/api/awardReceiveLog/awardReceiveLogPage`, {
    method: 'GET',
    params,
  })
  return covertTableData(response)
}

export const updateCollectionRecord = async (CollectionRecordUpdateDTO: CollectionRecordUpdateDTO) => {
  return request<CollectionRecordVO>(`/api/awardReceiveLog/editAwardReceiveLog`, {
    method: 'POST',
    data: CollectionRecordUpdateDTO,
  })
}

export const saveCollectionRecord = async (CollectionRecordUpdateDTO: CollectionRecordUpdateDTO) => {
  return request<CollectionRecordVO>(`/api/awardReceiveLog/addAwardReceiveLog`, {
    method: 'POST',
    data: CollectionRecordUpdateDTO,
  })
}

export const removeCollectionRecord = async (idList: string[]) => {
  return request<boolean>(`/api/awardReceiveLog/removeAwardReceiveLog?idList=${idList}`, { method: 'POST' })
}
